<?php
/**
 * 业务系统默认常量定义
 */

namespace Apps\Common\Constant;

/**
 * Class BusinessConstant
 * @package Apps\Common\Constant
 */
class BusinessConstant
{
    // 最大分页数
    const MAX_PAGE = 500;

    // wap页面最大分页数量
    const MAX_WAP_PAGE = 50;

    // 页面数据行数默认展示量
    const PAGE_SIZE = 50;

    // 页面数据行数大值设定
    const MAX_PAGE_SIZE = 60;

    // 针对固定长度列表设定的数据行数值
    const MAX_DATA_SIZE = 100;

    // 最大返回数据量
    const MAX_RETURN_SIZE = 10000;

    // 数据查询时时间偏移量设定值,单位天
    const DAY_OFFSET = 500;

    // 正常接口返回状态码值定义
    const NORMAL_STATUS_CODE = 200;

    // 第三方平台ticket
    const RECORD_SKEY_VERIFY_TICKET = 'component_verify_ticket';

    // 第三方平台accesstoken
    const RECORD_COMPONENT_ACCESS_TOKEN = 'component_access_token';

    // 第三方平台预授权码
    const RECORD_PRE_AUTHCODE = 'pre_auth_code';

    //第三方业务特征配置码
    const SERVICE_SPECIFY_CODE = 'service_code';

    const WX_FUNC_INFO_GROUP = [
        1 => '消息管理权限',
        2 => '用户管理权限',
        3 => '帐号服务权限',
        4 => '网页服务权限',
        5 => '微信小店权限',
        6 => '微信多客服权限',
        7 => '群发与通知权限',
        8 => '微信卡券权限',
        9 => '微信扫一扫权限',
        10 => '微信连WIFI权限',
        11 => '素材管理权限',
        12 => '微信摇周边权限',
        13 => '微信门店权限',
        14 => '微信支付权限',
        15 => '自定义菜单权限',
        16 => '获取认证状态及信息',
        17 => '帐号管理权限（小程序）',
        18 => '开发管理与数据分析权限（小程序）',
        19 => '客服消息管理权限（小程序）',
        20 => '微信登录权限（小程序）',
        21 => '数据分析权限（小程序）',
        22 => '城市服务接口权限',
        23 => '广告管理权限',
        24 => '开放平台帐号管理权限',
        25 => '开放平台帐号管理权限（小程序）',
        26 => '微信电子发票权限',
    ];

    const GIFT_TYPE_NONE = 0;
    const GIFT_TYPE_GOODS = 1;
    const GIFT_TYPE_CARDS = 2;
    const GIFT_TYPE_COUPON = 3;
    const GIFT_TYPE_GROUP = [
        self::GIFT_TYPE_NONE => '未中奖',
        self::GIFT_TYPE_GOODS => '实物',
        self::GIFT_TYPE_CARDS => '卡券',
        self::GIFT_TYPE_COUPON => '电子券',
    ];

    const WEIXIN_CARD_TYPE_GROUPON = 'GROUPON';
    const WEIXIN_CARD_TYPE_CASH = 'CASH';
    const WEIXIN_CARD_TYPE_DISCOUNT = 'DISCOUNT';
    const WEIXIN_CARD_TYPE_GIFT = 'GIFT';
    const WEIXIN_CARD_TYPE_GENERAL_COUPON = 'GENERAL_COUPON';
    const WEIXIN_CARD_TYPE_GROUP = [
        self::WEIXIN_CARD_TYPE_CASH => '代金券',
        self::WEIXIN_CARD_TYPE_DISCOUNT => '折扣券',
        self::WEIXIN_CARD_TYPE_GENERAL_COUPON => '优惠券',
        self::WEIXIN_CARD_TYPE_GIFT => '兑换券',
        self::WEIXIN_CARD_TYPE_GROUPON => '团购券'
    ];

    const WEIXIN_CARD_TYPE_EXTRA_FIELD = [
        self::WEIXIN_CARD_TYPE_CASH => [
            ['least_cost', '代金券专用，表示起用金额（单位为分）,如果无起用门槛则填0。'],
            ['reduce_cost', '代金券专用，表示减免金额。（单位为分）']
        ],
        self::WEIXIN_CARD_TYPE_DISCOUNT => [
            [
                'discount',
                '	折扣券专用，表示打折额度（百分比）。填30就是七折。'
            ]
        ],
        self::WEIXIN_CARD_TYPE_GENERAL_COUPON => [
            [
                'default_detail',
                '	优惠券专用，填写优惠详情。'
            ]
        ],
        self::WEIXIN_CARD_TYPE_GIFT => [
            [
                'gift',
                '兑换券专用，填写兑换内容的名称。'
            ]
        ],
        self::WEIXIN_CARD_TYPE_GROUPON => [
            [
                'deal_detail',
                '团购券专用，团购详情。'
            ]
        ]
    ];

    const WEIXIN_BASE_INFO_INTRO = [
        ['logo_url', '是', 'string(128)', 'http://mmbiz.qpic.cn/', '卡券的商户logo，建议像素为300*300。', true],
        [
            'code_type',
            '是',
            [
                'CODE_TYPE_TEXT' => '文本',
                'CODE_TYPE_BARCODE' => '一维码',
                'CODE_TYPE_QRCODE' => '二维码',
                'CODE_TYPE_ONLY_QRCODE' => '二维码无code显示',
                'CODE_TYPE_ONLY_BARCODE' => '一维码无code显示',
                'CODE_TYPE_NONE' => '不显示code和条形码类型',
            ],
            'CODE_TYPE_TEXT',
            '码型： "CODE_TYPE_TEXT"文本 ； "CODE_TYPE_BARCODE"一维码 "CODE_TYPE_QRCODE"二维码 "CODE_TYPE_ONLY_QRCODE",二维码无code显示； "CODE_TYPE_ONLY_BARCODE",一维码无code显示；CODE_TYPE_NONE， 不显示code和条形码类型'
        ],
        ['brand_name', '是', 'string（36）', '海底捞', '商户名字,字数上限为12个汉字。'],
        ['title', '是', 'string（27）', '双人套餐100元兑换券', '卡券名，字数上限为9个汉字。(建议涵盖卡券属性、服务及金额)。'],
        /*   ['sub_title', '否', 'string(54)', '双人套餐100元兑换券', '副标题，字数上限为18个汉字。'],*/
        [
            'color',
            '是',
            [
                'Color010' => 'Color010-#63b359',
                'Color020' => 'Color020-#2c9f67',
                'Color030' => 'Color030-#509fc9',
                'Color040' => 'Color040-#5885cf',
                'Color050' => 'Color050-#9062c0',
                'Color060' => 'Color060-#d09a45',
                'Color070' => 'Color070-#e4b138',
                'Color080' => 'Color080-#ee903c',
                'Color081' => 'Color081-#f08500',
                'Color082' => 'Color082-#a9d92d',
                'Color090' => 'Color090-#dd6549',
                'Color100' => 'Color100-#cc463d',
                'Color101' => 'Color101-#cf3e36',
                'Color102' => 'Color102-#5E6671',
            ],
            'Color010',
            '券颜色。按色彩规范标注填写Color010-Color100。'
        ],
        ['notice', '是', 'string（48）', '请出示二维码', '卡券使用提醒，字数上限为16个汉字。'],
        ['description', '是', 'string （3072）', '不可与其他优惠同享', '卡券使用说明，字数上限为1024个汉字。'],
        [
            'sku',
            '是',
            'JSON结构',
            '见上述示例。',
            '商品信息。',
            false,
            [
                ['quantity', '是', 'int', '100000', '卡券库存的数量，上限为100000000。'],
            ]
        ],
        [
            'date_info',
            '是',
            'JSON结构',
            '见上述示例。',
            '使用日期，有效期的信息。',
            false,
            [
                [
                    'type',
                    '是',
                    [
                        'DATE_TYPE_FIX_TIME_RANGE' => '表示固定日期区间',
                        'DATE_TYPE_FIX_TERM' => '表示固定时长'
                    ],
                    'DATE_TYPE_FIX_TIME_RANGE 表示固定日期区间，DATETYPE FIX_TERM 表示固定时长 （自领取后按天算。',
                    '使用时间的类型，旧文档采用的1和2依然生效。'
                ],
                [
                    'begin_timestamp',
                    '是',
                    'unsigned int',
                    '14300000',
                    'type为DATE_TYPE_FIX_TIME_RANGE时专用，表示起用时间。从1970年1月1日00:00:00至起用时间的秒数，最终需转换为字符串形态传入。（东八区时间,UTC+8，单位为秒）'
                ],
                ['end_timestamp', '是', 'unsigned int', '15300000', '表示结束时间 ， 建议设置为截止日期的23:59:59过期 。 （ 东八区时间,UTC+8，单位为秒 ）'],
                ['fixed_term', '是', 'int', '15', 'type为DATE_TYPE_FIX_TERM时专用，表示自领取后多少天内有效，不支持填写0。'],
                ['fixed_begin_term', '是', 'int', '0', 'type为DATE_TYPE_FIX_TERM时专用，表示自领取后多少天开始生效，领取后当天生效填写0。（单位为天）'],
                [
                    'end_timestamp',
                    '否',
                    'unsigned int',
                    '15300000',
                    '可用于DATE_TYPE_FIX_TERM时间类型，表示卡券统一过期时间 ， 建议设置为截止日期的23:59:59过期 。 （ 东八区时间,UTC+8，单位为秒 ），设置了fixed_term卡券，当时间达到end_timestamp时卡券统一过期'
                ]
            ]
        ],
        /*  ['use_custom_code', '否', 'bool', 'TRUE', '是否自定义Code码 。填写true或false，默认为false。 通常自有优惠码系统的开发者选择 自定义Code码，并在卡券投放时带入 Code码，详情见 是否自定义Code码 。'],
          [
              'get_custom_code_mode',
              '否',
              'string(32)',
              'GET_CUSTOM_COD E_MODE_DEPOSIT',
              '填入 GET_CUSTOM_CODE_MODE_DEPOSIT 表示该卡券为预存code模式卡券， 须导入超过库存数目的自定义code后方可投放， 填入该字段后，quantity字段须为0,须导入code 后再增加库存'
          ],
          ['bind_openid', '否', 'bool', 'TRUE', '是否指定用户领取，填写true或false 。默认为false。通常指定特殊用户群体 投放卡券或防止刷券时选择指定用户领取。'],
          ['service_phone', '否', 'string（24）', '40012234', '客服电话。'],
          ['location_id_list', '否', 'array', '12,342,312', '门店位置poiid。 调用 POI门店管理接 口 获取门店位置poiid。具备线下门店 的商户为必填。'],*/
        /*   ['use_all_locations', '否', 'bool', 'TRUE', '设置本卡券支持全部门店，与location_id_list互斥'],*/
        /* ['center_title', '否', 'string（18）', '立即使用', '卡券顶部居中的按钮，仅在卡券状 态正常(可以核销)时显示'],
         ['center_sub_title', '否', 'string（24）', '立即享受优惠', '显示在入口下方的提示语 ，仅在卡券状态正常(可以核销)时显示。'],
         ['center_url', '否', 'string（128）', 'www.qq.com', '顶部居中的url ，仅在卡券状态正常(可以核销)时显示。'],
         ['center_app_brand_user_name', '否', 'string（128）', 'gh_86a091e50ad4@app', '卡券跳转的小程序的user_name，仅可跳转该 公众号绑定的小程序 。'],
         ['center_app_brand_pass', '否', 'string（128）', 'API/cardPage', '卡券跳转的小程序的path'],
         ['custom_url_name', '否', 'string（15）', '立即使用', '自定义跳转外链的入口名字。'],
         ['custom_url', '否', 'string（128）', 'www.qq.com', '自定义跳转的URL。'],
         ['custom_url_sub_title', '否', 'string（18）', '更多惊喜', '显示在入口右侧的提示语。'],
         ['custom_app_brand_user_name', '否', 'string（128）', 'gh_86a091e50ad4@app', '卡券跳转的小程序的user_name，仅可跳转该 公众号绑定的小程序 。'],
         ['custom_app_brand_pass', '否', 'string（128）', 'API/cardPage', '卡券跳转的小程序的path'],
         ['promotion_url_name', '否', 'string（15）', '产品介绍', '营销场景的自定义入口名称。'],
         ['promotion_url', '否', 'string（128）', 'www.qq.com', '入口跳转外链的地址链接。'],
         ['promotion_url_sub_title', '否', 'string（18）', '卖场大优惠。', '显示在营销入口右侧的提示语。'],
         ['promotion_app_brand_user_name', '否', 'string（128）', 'gh_86a091e50ad4@app', '卡券跳转的小程序的user_name，仅可跳转该 公众号绑定的小程序 。'],
         ['promotion_app_brand_pass', '否', 'string（128）', 'API/cardPage', '卡券跳转的小程序的path'],*/
        ['get_limit', '否', 'int', '1', '每人可领券的数量限制,不填写默认为50。'],
        ['use_limit', '否', 'int', '100', '每人可核销的数量限制,不填写默认为50。'],
        /*   ['can_share', '否', 'bool', 'FALSE', '卡券领取页面是否可分享。'],
           ['can_give_friend', '否', 'bool', 'FALSE', '卡券是否可转赠。'],*/
    ];

    const WEIXIN_ADVANCED_INFO = [
        /*  [
              'use_condition',
              '否',
              'JSON结构',
              '使用门槛（条件）字段，若不填写使用条件则在券面拼写 ：无最低消费限制，全场通用，不限品类；并在使用说明显示： 可与其他优惠共享',
              '',
              false,
              [
                  ['accept_category', '否', 'string（512）', '指定可用的商品类目，仅用于代金券类型 ，填入后将在券面拼写适用于xxx', ''],
                  ['reject_category', '否', 'string（ 512 ）', '指定不可用的商品类目，仅用于代金券类型 ，填入后将在券面拼写不适用于xxxx', ''],
                  ['least_cost', '否', 'int', '满减门槛字段，可用于兑换券和代金券 ，填入后将在全面拼写消费满xx元可用。', ''],
                  ['object_use_for', '否', 'string（ 512 ）', '购买xx可用类型门槛，仅用于兑换 ，填入后自动拼写购买xxx可用。', ''],
                  ['can_use_with_other_discount', '否', 'bool', '不可以与其他类型共享门槛 ，填写false时系统将在使用须知里 拼写“不可与其他优惠共享”， 填写true时系统将在使用须知里 拼写“可与其他优惠共享”， 默认为true', ''],
              ]
          ],
          [
              'abstract',
              '否',
              'JSON结构',
              '封面摘要结构体名称',
              '',
              false,
              [
                  ['abstract', '否', 'string（24 ）', '封面摘要简介。', '封面摘要简介。'],
                  [
                      'icon_url_list',
                      '否',
                      'string（128 ）',
                      '封面图片列表，仅支持填入一个封面图片链接， 上传图片接口 上传获取图片获得链接，填写 非CDN链接会报错，并在此填入。 建议图片尺寸像素850*350',
                      '封面图片列表，仅支持填入一个封面图片链接， 上传图片接口 上传获取图片获得链接，填写 非CDN链接会报错，并在此填入。 建议图片尺寸像素850*350',
                      true
                  ],
              ]
          ],
          [
              'text_image_list',
              '否',
              'JSON结构',
              '图文列表，显示在详情内页 ，优惠券券开发者须至少传入 一组图文列表',
              '',
              false,
              [
                  ['image_url', '否', 'string（128 ）', '图片链接，必须调用 上传图片接口 上传图片获得链接，并在此填入， 否则报错', '', true],
                  ['text', '否', 'string（512 ）', '图文描述', ''],
              ]
          ],
          [
              'business_service',
              '否',
              'arry',
              '商家服务类型： BIZ_SERVICE_DELIVER 外卖服务； BIZ_SERVICE_FREE_PARK 停车位； BIZ_SERVICE_WITH_PET 可带宠物； BIZ_SERVICE_FREE_WIFI 免费wifi， 可多选',
              ''
          ],
          [
              'time_limit',
              '否',
              'JSON结构',
              '使用时段限制，包含以下字段',
              '',
              false,
              [
                  [
                      'type',
                      '否',
                      'string（24 ）',
                      '限制类型枚举值：支持填入 MONDAY 周一 TUESDAY 周二 WEDNESDAY 周三 THURSDAY 周四 FRIDAY 周五 SATURDAY 周六 SUNDAY 周日 此处只控制显示， 不控制实际使用逻辑，不填默认不显示',
                      ''
                  ],
                  ['begin_hour', '否', 'int', '当前type类型下的起始时间（小时） ，如当前结构体内填写了MONDAY， 此处填写了10，则此处表示周一 10:00可用', ''],
                  ['begin_minute', '否', 'int', '当前type类型下的起始时间（分钟） ，如当前结构体内填写了MONDAY， begin_hour填写10，此处填写了59， 则此处表示周一 10:59可用', ''],
                  ['end_hour', '否', 'int', '当前type类型下的结束时间（小时） ，如当前结构体内填写了MONDAY， 此处填写了20， 则此处表示周一 10:00-20:00可用', ''],
                  ['end_minute', '否', 'int', '当前type类型下的结束时间（分钟） ，如当前结构体内填写了MONDAY， begin_hour填写10，此处填写了59， 则此处表示周一 10:59-00:59可用', ''],
              ]
          ],*/
    ];


    const WEIXIN_CARD_BUSINESS_SERVICE_OPTIONS = [
        "BIZ_SERVICE_FREE_WIFI" => '免费wifi',
        "BIZ_SERVICE_WITH_PET" => '可带宠物',
        "BIZ_SERVICE_FREE_PARK" => '停车位',
        "BIZ_SERVICE_DELIVER" => '外卖服务'
    ];

    const WEIXIN_CARD_TIMELIMIT_OPTIONS = [
        'MONDAY' => '周一',
        'TUESDAY' => '周二',
        'WEDNESDAY' => '周三',
        'THURSDAY' => '周四',
        'FRIDAY' => '周五',
        'SATURDAY' => '周六',
        'SUNDAY' => '周日',
    ];

    const UPDATE_WEIXINCARD = [
        ['logo_url', '否', 'string(128)', 'http://mmbiz.qpic.cn/', '卡券的商户logo，建议像素为300*300。', true],
        /*   ['notice', '否', 'string（48）', '请出示二维码', '卡券使用提醒，字数上限为16个汉字。'],*/
        ['description', '否', 'string （3072）', '不可与其他优惠同享', '卡券使用说明，字数上限为1024个汉字。'],
        [
            'date_info',
            '否',
            'JSON结构',
            '见上述示例。',
            '使用日期，有效期的信息。',
            false,
            [
                [
                    'type',
                    '是',
                    [
                        'DATE_TYPE_FIX_TIME_RANGE' => '表示固定日期区间'
                    ],
                    'DATE_TYPE_FIX_TIME_RANGE 表示固定日期区间，DATETYPE FIX_TERM 表示固定时长 （自领取后按天算。',
                    '使用时间的类型，旧文档采用的1和2依然生效。'
                ],
                [
                    'begin_timestamp',
                    '是',
                    'unsigned int',
                    '14300000',
                    'type为DATE_TYPE_FIX_TIME_RANGE时专用，表示起用时间。从1970年1月1日00:00:00至起用时间的秒数，最终需转换为字符串形态传入。（东八区时间,UTC+8，单位为秒）'
                ],
                ['end_timestamp', '是', 'unsigned int', '15300000', '表示结束时间 ， 建议设置为截止日期的23:59:59过期 。 （ 东八区时间,UTC+8，单位为秒 ）'],
            ]
        ],
        ['service_phone', '否', 'string（24）', '40012234', '客服电话。'],

        [
            'color',
            '否',
            [
                'Color010' => 'Color010-#63b359',
                'Color020' => 'Color020-#2c9f67',
                'Color030' => 'Color030-#509fc9',
                'Color040' => 'Color040-#5885cf',
                'Color050' => 'Color050-#9062c0',
                'Color060' => 'Color060-#d09a45',
                'Color070' => 'Color070-#e4b138',
                'Color080' => 'Color080-#ee903c',
                'Color081' => 'Color081-#f08500',
                'Color082' => 'Color082-#a9d92d',
                'Color090' => 'Color090-#dd6549',
                'Color100' => 'Color100-#cc463d',
                'Color101' => 'Color101-#cf3e36',
                'Color102' => 'Color102-#5E6671',
            ],
            'Color010',
            '券颜色。按色彩规范标注填写Color010-Color100。'
        ],
        ['location_id_list', '否', 'array', '12,342,312', '门店位置poiid。 调用 POI门店管理接 口 获取门店位置poiid。具备线下门店 的商户为必填。'],
        /*    ['center_title', '否', 'string（18）', '立即使用', '卡券顶部居中的按钮，仅在卡券状 态正常(可以核销)时显示'],
            ['center_sub_title', '否', 'string（24）', '立即享受优惠', '显示在入口下方的提示语 ，仅在卡券状态正常(可以核销)时显示。'],
            ['center_url', '否', 'string（128）', 'www.qq.com', '顶部居中的url ，仅在卡券状态正常(可以核销)时显示。'],
            ['custom_url_name', '否', 'string（15）', '立即使用', '自定义跳转外链的入口名字。'],
            ['custom_url', '否', 'string（128）', 'www.qq.com', '自定义跳转的URL。'],
            ['custom_url_sub_title', '否', 'string（18）', '更多惊喜', '显示在入口右侧的提示语。'],
            ['promotion_url_name', '否', 'string（15）', '产品介绍', '营销场景的自定义入口名称。'],
            ['promotion_url', '否', 'string（128）', 'www.qq.com', '入口跳转外链的地址链接。'],
            ['promotion_url_sub_title', '否', 'string（18）', '卖场大优惠。', '显示在营销入口右侧的提示语。'],*/
        [
            'code_type',
            '否',
            [
                'CODE_TYPE_TEXT' => '文本',
                'CODE_TYPE_BARCODE' => '一维码',
                'CODE_TYPE_QRCODE' => '二维码',
                'CODE_TYPE_ONLY_QRCODE' => '二维码无code显示',
                'CODE_TYPE_ONLY_BARCODE' => '一维码无code显示',
                'CODE_TYPE_NONE' => '不显示code和条形码类型',
            ],
            'CODE_TYPE_TEXT',
            '码型： "CODE_TYPE_TEXT"文本 ； "CODE_TYPE_BARCODE"一维码 "CODE_TYPE_QRCODE"二维码 "CODE_TYPE_ONLY_QRCODE",二维码无code显示； "CODE_TYPE_ONLY_BARCODE",一维码无code显示；CODE_TYPE_NONE， 不显示code和条形码类型'
        ],
        ['get_limit', '否', 'int', '1', '每人可领券的数量限制,不填写默认为50。'],
        ['can_share', '否', 'bool', 'FALSE', '卡券领取页面是否可分享。'],
        ['can_give_friend', '否', 'bool', 'FALSE', '卡券是否可转赠。'],
    ];

    const GOODS_TYPE = [
        0 => '电子券',
        1 => '微信卡券'
    ];

}
